A network element can include two different planes that are used to process network traffic: a control plane; and a data plane that includes one or more hardware forwarding engines. The data plane receives, processes, and forwards network traffic using various configuration data (e.g., forwarding, security, quality of service (QoS), and other network traffic processing information). The control plane controls these processing functions of the data plane by configuring the data plane, managing data collected by the data plane, monitoring the data plane, and other management functions. The functions for each of the data and control planes are programmed by a software image, the network element operating system, that is stored on the network element.
Some of this control plane data will be programmed into the one or more data planes, such that this data is used by the data plane to process and forward network data received by the network element. For example, the control plane can receive routing protocol updates, address updates, updates to access control lists. In addition, this type of data will be needed to be stored in a priority order. In order for the data to be properly programmed in the correct priority order, a forwarding agent uses a first in first out (FIFO) queue to store the data for the data plane. A hardware writer retrieves the data from the FIFO and programs that hardware table in order. However, using the FIFO queue is flawed because each and every data is sent to the hardware writer. This can be a problem in a link flapping scenario, for example. where a link of the network element goes up and down. In this example, the same data can toggle back and forth between different values.
In addition, some of the hardware tables require existing entries to be moved before new entries can be added to the table. Moving existing entries can be disruptive unless the moves are performed in a specific order.